from django.contrib.auth.decorators import login_required
from django.shortcuts import render_to_response
from django.contrib.auth import authenticate, login
from django.contrib.auth.views import logout
from django.http import HttpResponseRedirect
from seguridad.models import Accion, AccionRealizada, Usuario
from datetime import datetime


def www_index(request):
    if request.user.is_authenticated():
        aux_usuario = Usuario.objects.get(user=request.user)
        request.nombre = aux_usuario.nombre
        request.apellido = aux_usuario.apellido
        return render_to_response('www/inicio.html', {'request' : request})
    else:
        return render_to_response('base.html', {'request': request})

def www_login(request):
    if request.user.is_authenticated():
        aux_usuario = Usuario.objects.get(user=request.user)
        request.nombre = aux_usuario.nombre
        request.apellido = aux_usuario.apellido
        return render_to_response('www/inicio.html', {'request' : request})
    else:
        return render_to_response('www/login.html', {'request': request})

def www_login_iniciar(request):
    u = request.POST['usuario']
    p = request.POST['contrasena']
    usr = authenticate(username=u, password=p)
    if usr is not None:
        if usr.is_active:
            login(request, usr)
            aux_usuario = Usuario.objects.get(user=usr)
            aux_accion = Accion.objects.get(nombre="LOGIN")
            accion_realizada = AccionRealizada(usuario=aux_usuario, accion=aux_accion, fecha=datetime.now())
            accion_realizada.save()
        else:
            return render_to_response('www/error.html', {'request': request, 'error': 'El usuario ha sido deshabilitado'})
    else:
        return render_to_response('www/error.html', {'request': request, 'error': 'Error en el usuario o contrasena'})
    return HttpResponseRedirect("/novedades/")

@login_required
def www_perfil(request):
    aux_usuario = Usuario.objects.get(user=request.user)
    request.nombre = aux_usuario.nombre
    request.apellido = aux_usuario.apellido
    request.fecha = aux_usuario.nacimiento
    return render_to_response('www/perfil.html', {'request' : request})

@login_required
def www_perfil_actualizar(request):
    # Actualizacion
    aux_usuario = Usuario.objects.get(user=request.user)
    if request.POST['contrasena']:
        aux_usuario.user.set_password(request.POST['contrasena'])
    if request.POST['fecha_nacimiento']:
        if request.POST['fecha_nacimiento'] != aux_usuario.nacimiento:
            aux_usuario.nacimiento = request.POST['fecha_nacimiento']
    aux_usuario.save()
    aux_usuario.user.save()
    # Bitacora
    aux_accion = Accion.objects.get(nombre="UPDATE_USER")
    accion_realizada = AccionRealizada(usuario=aux_usuario, accion=aux_accion, fecha=datetime.now())
    accion_realizada.save()
    # Return
    request.nombre = aux_usuario.nombre
    request.apellido = aux_usuario.apellido
    return render_to_response('www/mensaje.html', {'request':request, 'url':'/novedades/perfil/', 'mensaje':'Se actualizo el perfil correctamente'})

@login_required
def www_logout(request):
    aux_accion = Accion.objects.get(nombre="LOGOUT")
    usr = Usuario.objects.get(user=request.user)
    accion_realizada = AccionRealizada(usuario=usr, accion=aux_accion, fecha=datetime.now())
    accion_realizada.save()
    logout(request)
    return HttpResponseRedirect("/novedades/")

